Computers and the Internet have revolutionized the manner and speed by which people are able to communicate in today's world. For example, electronic mail (“e-mail”) has become firmly established as a principle mode of electronic communication. E-mail communication is superior to traditional forms of mail communication, since e-mails are delivered electronically and, as a result, nearly instantaneously.
While delivery of e-mails is essentially instantaneous, they do not provide any indication as to whether the recipient is immediately available to open and read an e-mail message. In other words, e-mail systems are asynchronous in nature and consequently do not provide a reliable means for communicating in real-time.
To overcome the asynchronous nature of e-mail communications, a technology known as instant messaging (“IM”) has been developed. IM is an increasingly popular form of electronic communication that allows users of networked computers to communicate in real-time. In a typical IM system, an IM application is installed on the computer of each user. Users of the same IM service are distinguished from one another by user IDs. Contact lists (i.e., “buddy lists”) are also provided to allow users to save the user IDs of the people they most frequently communicate with.
An IM user initiates an IM session by selecting a user ID from his or her contact list and typing a message to the selected contact through a keyboard attached to the IM initiator's computer. The IM application transmits the IM to the IM application executing on the contacted user's (i.e., buddy's) computer. The IM application then displays the IM on the display terminal of the contacted user's computer. The contacted user may then either ignore the IM or respond to the IM by typing a message back to the IM initiator.
Most IM applications also provide information indicating whether a “buddy” in the user's contact list is available or unavailable to engage in an IM session. This so-called “presence information” is provided to IM users in the form of presence status indicators or icons, which are typically shown next to the buddy's user ID in a user's contact list. Typical presence status indicators include: online, offline, busy (e.g., on the phone) or away from the computer (e.g., in a meeting). These presence status indicators are useful since, unlike traditional e-mail systems, an IM user need only check the presence status of the user to determine whether the other user is available for real-time messaging.
Many IM applications require an IM user to manually select from among a plurality of available presence status indicators in order to inform other IM users of their presence status. Some others, like, for example, Microsoft's UC (unified communications) client application, provide a limited capability of determining the presence status of a user automatically by tracking whether the user has interacted with his or her computer's keyboard or mouse during a predetermined time span (e.g., 15 minutes). This process allows the online/offline and present/away status to be determined without the user having to manually set his or her presence status preference. However, because the user may be present at the computer for an extended period of time without actually interacting with the computer's keyboard or mouse, monitoring and updating the presence status of the user using this approach is not very reliable. Consequently, it is not unusual for an IM user to initiate an IM session, only to find out that the user being contacted is actually not really present or available to communicate at that moment in time.
Another shortcoming of prior art presence aware IM systems, and other presence aware real-time communication systems (e.g., voice over Internet protocol (VoIP), is that they do not determine the proximity of a user relative to the user's computer, other than for times when perhaps the user is interacting with the computer's keyboard or mouse. Finally, prior art presence aware IM systems, and other real-time communication systems, do not provide a reliable means for determining that a user has shifted presence to another mode of communicating (e.g., from a personal computer (PC) to use of a mobile device) or for conveying to other system users that the user may have shifted presence to another mode of communicating.
It would be desirable, therefore, to have real-time communication systems and methods that reliably determine the proximity of a user relative to the user's computer, and/or the user's ability or willingness to communicate, without the need to track the user's interaction with the computer's keyboard or mouse. It would also be desirable to have real-time communication methods and apparatuses for determining that a user being contacted has shifted presence to another mode of communicating, and systems and methods for alerting other users of the user's shift to another mode of communicating. Finally, it would be desirable to have systems and methods which allow a headset user to listen to a real-time communication message during times when the user is not near their computing device, and to use a communications device (e.g., a headset) to initiate the opening of a voice channel back to the user that initiated the real-time communication session.